10. 微调中的核心训练参数(Hyperparameters)

在大模型微调(Fine-tuning)中,

模型结构固然重要,但真正决定训练效果的通常是:

超参数(Hyperparameters)

例如:

这些参数会直接影响:


1. Learning Rate(学习率)

学习率(LR)是:

微调中最重要的参数之一。

它决定:

模型每次更新权重时走多大一步。


2. 学习率过大(Too High)

如果:

learning_rate 太高

模型更新会非常激进。

可能导致:


现象

graph LR

A[学习率过高]
--> B[参数更新过大]
--> C[Loss震荡]
--> D[训练不稳定]

3. 学习率过小(Too Low)

如果:

learning_rate 太低

模型虽然会学习。

但:


现象

graph LR

A[学习率过低]
--> B[参数更新太小]
--> C[Loss下降缓慢]
--> D[训练时间极长]

4. 好的 Learning Rate

一个合适的学习率通常表现为:

Loss 稳定下降,并逐渐收敛。


理想 Loss 曲线

Loss
│
│\
│ \
│  \
│   \
│    \____
│
└──────────

5. 动态学习率(LR Scheduler)

训练中通常不会一直使用固定学习率。

因为:

因此会使用:

Learning Rate Scheduler(学习率调度器)


6. Cosine Annealing(余弦退火)

一种经典策略:

Cosine Annealing(余弦退火)

特点:


变化趋势

LR
│\
│ \
│  \
│   \__
│      \___
│
└────────────

类似余弦曲线。


7. Linear Decay with Warmup

LLM 中更常见的方法:

Linear Decay + Warmup


Warmup(预热)

训练刚开始时:

learning rate 很小

然后:

逐渐增大。

因为:


后期

Warmup 后:

学习率再缓慢下降。


流程图

graph LR

A[Warmup 小学习率]
--> B[逐渐升高]

B --> C[达到峰值学习率]

C --> D[线性下降]

D --> E[稳定收敛]

8. Optimizer(优化器)

Optimizer 用于:

根据梯度更新模型参数。


9. 常见优化器

Optimizer 常见学习率
SGD 0.01
Adam 0.001
AdamW 5e-5(LLM常见)

10. SGD(随机梯度下降)

最经典优化器:

SGD(Stochastic Gradient Descent)

更新公式:

参数 = 参数 - lr × gradient

特点:

但对于 LLM:

收敛较慢。


11. Adam

Adam 会自动:

因此:

更适合 Transformer 和 LLM。


12. AdamW

现代 LLM 最常见:

AdamW

相比 Adam:


Transformers 示例

optimizer = AdamW(
    model.parameters(),
    lr=5e-5
)

13. Epoch(训练轮数)

Epoch 表示:

模型完整看过一次训练集。

例如:

epoch = 1

意味着:

所有训练数据训练了一遍。


14. Epoch 太少的问题

如果 Epoch 太少:


15. Epoch 太多的问题

如果 Epoch 太多:

即:

Catastrophic Forgetting(灾难性遗忘)


16. Batch Size

Batch Size 指:

一次更新参数前,
同时处理多少训练样本。


17. 小 Batch

例如:

batch_size = 1

特点:


优点


缺点


18. 大 Batch

例如:

batch_size = 128

特点:


优点


缺点


19. OOM(显存不足)

如果出现:

CUDA out of memory

通常可以:


20. 监控 Loss

训练中最重要的指标:

指标 含义
Training Loss 训练集损失
Validation Loss 验证集损失

21. 理想训练过程

良好的训练通常表现为:

graph LR

A[Training Loss下降]
--> B[Validation Loss下降]

B --> C[最终收敛]

22. 过拟合现象

如果:

说明:

模型开始记忆训练集。


过拟合图

Train Loss ↓
Validation Loss ↑

23. Checkpoint(检查点)

训练过程中通常会保存:

Checkpoint(模型检查点)

用于:


24. Reproducibility(可复现性)

训练中存在:

因此:

每次训练结果可能不同。


25. Random Seed(随机种子)

为了提升复现性:

通常设置:

torch.manual_seed(42)

这样:

会更稳定。


26. 微调的显存需求

全量微调(Full Fine-tuning)非常耗显存。

因为除了模型权重:

还需要存储:


27. 显存为什么是模型的 2~3 倍

例如:

7B 模型

参数本身可能占:

14GB

但训练时:

还会额外占用大量显存。

因此:

实际训练显存通常是模型大小的 2~3 倍。


28. LoRA(Low-Rank Adaptation)

LoRA 是目前最常见的大模型微调技术之一。

核心思想:

不更新全部参数,
只训练少量低秩矩阵。


29. LoRA 的数学思想

原始权重:

W

LoRA 不直接更新:

W

而是增加:

ΔW = A × B

其中:

最终:

W_new = W + ΔW

30. LoRA 流程图

graph LR

A[原始模型权重 W]
--> B[冻结 Frozen]

C[LoRA 小矩阵 A/B]
--> D[训练更新]

B --> E[最终权重]

D --> E

31. 为什么 LoRA 很有效

因为 Transformer 中:

大部分知识已经存在。

微调只需要:

“轻微调整”。

因此不需要更新全部参数。


32. LoRA 的优势

优势 说明
显存占用小 只训练少量参数
训练速度快 梯度更少
成本低 单卡可训练
易部署 可单独保存 Adapter

33. 为什么 LoRA 学习率更高

由于:

因此通常使用:

比全量微调高约 10 倍的学习率。

例如:

方法 LR
Full FT 5e-5
LoRA 1e-4 ~ 1e-3

34. Alpha 参数

LoRA 中重要参数:

alpha

作用:

控制 LoRA 更新对原模型的影响强度。


简化理解

alpha 越大
→ LoRA 影响越强

35. 一句话总结

Learning Rate:

决定模型每次学多少。

Batch Size:

决定一次看多少数据。

Epoch:

决定模型看几遍数据。

Optimizer:

决定如何更新参数。

LoRA:

用极少参数高效微调大模型。